import os
import sys
import logging
from datetime import datetime

# 配置日志系统
def setup_logging():
    # 获取当前日期作为日志文件名
    log_date = datetime.now().strftime('%Y%m%d')
    # 获取与src同级的logs目录
    log_dir = os.path.join(os.path.dirname(os.path.dirname(__file__)), 'logs')
    
    # 确保日志目录存在
    if not os.path.exists(log_dir):
        os.makedirs(log_dir)
        # 注意：这里不能使用print，因为后面会重定向stdout
    
    # 日志文件路径
    log_file = os.path.join(log_dir, f'{log_date}.log')
    
    # 配置logging
    logging.basicConfig(
        level=logging.INFO,
        format='%(asctime)s - %(levelname)s - %(message)s',
        handlers=[
            logging.FileHandler(log_file, encoding='utf-8'),
            logging.StreamHandler(sys.stdout)
        ]
    )
    
    # 重定向标准输出和标准错误到日志
    class LoggerWriter:
        def __init__(self, level):
            self.level = level
        
        def write(self, message):
            if message.strip():
                self.level(message.strip())
        
        def flush(self):
            pass
    
    # 保存原始的stdout和stderr
    sys.stdout = LoggerWriter(logging.info)
    sys.stderr = LoggerWriter(logging.error)